<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>

<script>
    /**
     * 洗牌算法
     * 从原始数组中每次随机选中一个元素，然后放入新数组中。
     * 每取出一个元素后，将它从原数组中取出（使用splice方法），原数组长度-1
    */ 
    var arr = [1, 2, 3, 4, 5];
    function shuffle(arr) {
        let res = [], random;
        while (arr.length) {
            random = Math.floor(Math.random() * arr.length);
            res.push(arr[random]);
            arr.splice(random, 1);
        }
        return res;
    }
    console.log(shuffle(arr));

    /**
     * 方法2：和最后一个元素交换
    */
    var arr2 = [1, 2, 3, 4, 5];
    function shuffle2(arr2) {
        let n = arr2.length;
        let temp, random;
        while (n != 0) {
            random = parseInt(Math.random() * n);
            n--; // 方便下一趟循环继续交换
            temp = arr2[length];
            arr2[length] = arr2[random];
            arr2[random] = temp;

        }
        return arr2;
    }
    console.log(shuffle2(arr2));

    /**
     * 方法3：
    */
    var arr3 = [1, 2, 3, 4, 5];
    function shuffle3(arr3) {
        arr3.sort(() => 0.5 - Math.random());
    }
    console.log(shuffle3(arr3));



</script>

</html>